XML provides for two types of parser, one of which has many more options than the other. Validating parsers have to enforce the entire XML 1.0 specification, while non-validating parsers only enforce well-formedness constraints - they don't compare the document to the rules laid down in your schema.
Non-validating parsers are lighter and quicker, but they won't check documents against the full declarations of your schema. Element content models won't be checked, and neither will attribute constraints. Non-validating parsers are most useful in situations where the document content has already been validated by another parser.
Non-validating parsers have another option that may cause problems if you're used to working in validating environments. Non-validating parsers are not required to load external resources referenced by a document. This means that neither the external subset of the document type declaration nor external entity references have to be processed by non-validating parsers.
While some non-validating parsers (notably Microstar's Aelfred) load this information anyway, others (notably James Clark's Expat, used in many applications) don't retrieve external resources. If external resources aren't loaded, default attribute values specified in the DTD will not be applied, and external entities won't be expanded.
This may or may not affect your documents, but if your documents rely on either default attributes or external entities to be meaningful, you'll need to take steps to ensure their integrity. The simplest way to do this is to require all processing of the document be done with validating parsers, but this has to be done separately from the XML - there's no way for an XML document to insist that it be validated. You'll have to make that clear in comments and correspondence with application developers and users. The other option is to store your XML internally in a format that relies on default attributes and entities, but transmits it to other users after processing it to include defaulted attributes and external entity values. (There isn't much you can do about unparsed entities, however.)
Copyright 2000 Extensibility, Inc.
Suite 250, 200 Franklin Street, Chapel Hill, North Carolina 27516